🏁 Финальный проект: создание и публикация пакета
🎯 Цель проекта
Завершающий этап курса объединяет все навыки, полученные ранее. Вы создадите собственный RPM-пакет с нуля, проведёте его сборку, тестирование и публикацию через Automated Build Farm (ABF).
После выполнения вы:
- полностью освоите жизненный цикл пакета;
- научитесь документировать и сопровождать проект;
- получите готовый пример для портфолио инженера сопровождения ROSA Linux.
🧱 Шаг 1. Подготовка проекта
Создадим тестовый проект на C, Python или Go — на ваш выбор.
Для примера возьмём классический C-проект hello-rosa.
mkdir ~/projects/hello-rosa
cd ~/projects/hello-rosa
echo '#include <stdio.h>\nint main(){printf("Hello from ROSA Linux!\\n");return 0;}' > hello.c
tar czf hello-rosa-1.0.tar.gz hello.c
Скопируйте архив в SOURCES:
cp hello-rosa-1.0.tar.gz ~/rpmbuild/SOURCES/
⚙️ Шаг 2. Создание SPEC-файла
rpmdev-newspec hello-rosa
Затем откройте ~/rpmbuild/SPECS/hello-rosa.spec и заполните:
Name: hello-rosa
Version: 1.0
Release: 1%{?dist}
Summary: My first ROSA Linux package
License: MIT
URL: https://example.com/hello-rosa
Source0: %{name}-%{version}.tar.gz
BuildRequires: gcc
Requires: glibc
%description
A simple Hello World program packaged for ROSA Linux.
%prep
%autosetup -n %{name}-%{version}
%build
gcc hello.c -o hello-rosa
%install
install -Dm0755 hello-rosa %{buildroot}%{_bindir}/hello-rosa
%files
%license LICENSE
%{_bindir}/hello-rosa
%changelog
* Thu Nov 6 2025 Sergey Braumann <sergeybraumann@gmail.com> 1.0-1
- Initial build for ROSA Linux
🧩 Шаг 3. Сборка пакета
rpmbuild -ba ~/rpmbuild/SPECS/hello-rosa.spec
Результат:
~/rpmbuild/RPMS/x86_64/hello-rosa-1.0-1.x86_64.rpm
~/rpmbuild/SRPMS/hello-rosa-1.0-1.src.rpm
🧪 Шаг 4. Проверка качества
Проверьте пакет на ошибки и структуру:
rpmlint SPECS/hello-rosa.spec RPMS/x86_64/hello-rosa-1.0-1.x86_64.rpm
Выведите содержимое:
rpm -qlp RPMS/x86_64/hello-rosa-1.0-1.x86_64.rpm
Проверьте установку:
sudo dnf install ./RPMS/x86_64/hello-rosa-1.0-1.x86_64.rpm
hello-rosa
🧰 Шаг 5. Проверка сборки в mock
mock rebuild ~/rpmbuild/SRPMS/hello-rosa-1.0-1.src.rpm
Лог сборки:
/var/lib/mock/rosa2024.1-x86_64/result/build.log
💡 Если сборка проходит в mock — она почти наверняка пройдёт и на ABF.
🚀 Шаг 6. Публикация через Automated Build Farm (ABF)
-
Создайте новый проект на https://abf.rosalinux.ru — выберите имя
hello-rosa. -
Клонируйте репозиторий:
git clone https://abf.rosalinux.ru/yourname/hello-rosa.git
cd hello-rosa -
Скопируйте
SPECиSOURCES:cp ~/rpmbuild/SPECS/hello-rosa.spec .
cp ~/rpmbuild/SOURCES/hello-rosa-1.0.tar.gz . -
Добавьте и зафиксируйте изменения:
git add .
git commit -m "init: first package for ROSA"
git push origin main -
Создайте Pull Request (PR), если работаете в ветке, и дождитесь ревью от коллег.
🧩 Шаг 7. Автоматическая сборка на ABF
После пуша ABF автоматически:
- создаст SRPM;
- запустит сборку;
- проверит зависимости;
- выложит результат в
testing-репозиторий.
Мониторинг:
- перейдите в раздел Builds;
- откройте
build.logи убедитесь в статусеSucceeded.
🧾 Шаг 8. Публикация и обновления
После успешной сборки:
- пакет появится в репозитории
testing; - после одобрения QA попадёт в
updates.
Для обновления:
- измените
VersionилиRelease; - обновите
changelog; - пересоберите SRPM;
- отправьте PR с изменениями.
🧱 Результат проекта
В результате вы получите:
- исходный код проекта;
- SPEC-файл и SRPM;
- опубликованный RPM-пакет;
- опыт полного цикла сопровождения — от исходников до релиза в ABF.
🧠 Самопроверка
| Вопрос | Ответ |
|---|---|
| Что публикуется в ABF? | SRPM и SPEC-файлы |
| Где должен храниться changelog? | В конце SPEC |
Что делает команда mock rebuild? | Проверяет сборку в изолированной среде |
| Когда повышается Release? | При изменении SPEC или патчей |
| Что подтверждает успешную сборку на ABF? | Статус Succeeded в Build Logs |
🧭 Завершение курса
Поздравляем 🎉 — вы завершили курс «Инженер по сопровождению RPM-пакетов ROSA Linux»!
Теперь вы умеете:
- готовить окружение и использовать инструменты сборки;
- разрабатывать, сопровождать и тестировать пакеты;
- работать с Git и ABF;
- обеспечивать качество, стабильность и соответствие политикам ROSA.
📘 Что делать дальше
- Продолжайте сопровождать реальные пакеты — выберите один из открытых проектов ROSA и внесите вклад.
- Следите за обновлениями ABF — система постоянно развивается.
- Освойте ROSA Packaging Policies и CI API для углубления навыков.
- Постройте личный портфолио: опубликуйте свои пакеты на GitHub или ABF.
💬 Ваш путь инженера сопровождения только начинается — теперь вы готовы к реальной практике и работе в экосистеме ROSA Linux.